import dayjs from 'dayjs';
// 禁用-目前时间之后
export function disabledDate(time) {
  return time.getTime() > Date.now();
}

const pattern = {
  date: 'YYYY-MM-DD',
  fullDate: 'YYYY-MM-DD HH:mm:ss',
};

function isMoment(v) {
  return dayjs.isMoment(v);
}

function getMoment(m) {
  return isMoment(m) ? m : dayjs(m);
}

function getValue(m, pat) {
  return (m = getMoment(m)), m.isValid() ? m.format(pat) : '';
}

function getPattern(pat) {
  return typeof pat === 'string' ? pattern[pat] || pat : pattern.fullDate;
}

export default {
  getMoment(v) {
    const m = getMoment(v);
    return m.isValid() ? m : undefined;
  },
  getDate(v) {
    return getValue(v, pattern.date);
  },
  getTime(v) {
    return getValue(v, pattern.fullDate);
  },
  getDateStartOf(v, of, pat) {
    return getValue(getMoment(v).startOf(of), getPattern(pat));
  },
  getDateEndOf(v, of, pat) {
    return getValue(getMoment(v).endOf(of), getPattern(pat));
  },
};
